//Package readini 用于读取和监听 ini 配置文件
package readini

// ListenFunc 用于监听 ini 配置文件.
type ListenFunc func(string)

// Listener 是函数 listen(inifile string) 的接口.
type Listener interface {
	listen(inifile string)
}

func (listenFunc ListenFunc) listen(filename string) {
	listenFunc(filename)
}

// Watch 读取 ini 配置文件并监听配置变化.
func Watch(filename string, listener Listener) (*Configuration, error) {

	cfg, err := Load(filename)

	if err != nil {
		return nil, err
	}

	go listener.listen(filename)

	return cfg, nil
}
